package com.xingshang.controller;


import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xingshang.utils.Result;
import com.xingshang.utils.ResultCodeEnum;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("ai")
public class AiController {

    @PostMapping("lyric")
    public Result lyric(@RequestBody String prompt) {
        try {
            // 构建请求体
            Map<String, Object> messages = new HashMap<>();
            List<Map<String, String>> messageList = new ArrayList<>();

            // 系统信息
            Map<String, String> systemMessage = new HashMap<>();
            systemMessage.put("role", "system");
            systemMessage.put("content", "你是一位顶级作词、作曲专家，特别擅长编写优质押韵歌词，编写优美旋律歌曲!");
            messageList.add(systemMessage);

            // 用户信息
            Map<String, String> userMessage = new HashMap<>();
            userMessage.put("role", "user");
            userMessage.put("content", "请根据以下关键词创作一段歌词，歌词应具有情感深度，符合关键词的主题。歌词必须不多于7大句也不少于3大句，两小句以逗号分割，每一大句包含两小句，以换行符分割，每句歌词之间流畅衔接，且不包含任何额外的解释或内容，直接输出完整的歌词：" + prompt);
            messageList.add(userMessage);

            messages.put("messages", messageList);
            messages.put("model", "grok-beta");
            messages.put("stream", false);
            messages.put("temperature", 0);

            // 将消息转换为 JSON 格式
            String body = new ObjectMapper().writeValueAsString(messages);

            // 调用 API
            String url = "https://api.x.ai/v1/chat/completions";
            HttpResponse response = HttpRequest.post(url)
                    .header("Content-Type", "application/json")
                    .header("Authorization", "Bearer xai-OFgFFwHGuN243IrXeP4stXhcPViTmDrSezavf6wQBxV3FytTAYZPC0XxWHuYpeiV8e46RNp9zUzSPz9W")
                    .body(body)
                    .execute();

            // 获取并返回响应
            String resp = response.body();
            System.out.println(resp);
            //将resp转为json
            JSONObject jsonObject = JSON.parseObject(resp);

            return Result.ok(jsonObject);
        } catch (Exception e) {
            // 异常处理
            e.printStackTrace();
            return Result.build(null, ResultCodeEnum.NULL_DATA);
        }
    }


}
